#pragma once

#include <string>

namespace kratos {
namespace corelib {

enum class AppenderType {
    Null = 1, // Log black hole
    Console, // Console
    File, // File
};

// The base class for log appender
class Appender {
public:
    virtual ~Appender() = default;
    // Startup
    // @param config The config of appender
    // @retval true
    // @retval false fail
    virtual bool start(const std::string& config) = 0;
    // Cleanup
    virtual void stop() = 0;
    // Append the log line
    // @param line The log line
    virtual void write(const std::string& line) = 0;
};

}
}
